Field of the Invention
This invention relates generally to the field of computer processors. More particularly, the invention relates to an apparatus and method for filtering compressed textures.
Description of the Related Art
Texture mapping is a well known technique implemented in graphics pipelines to apply texture to the surface of a shape or polygon. The texture data is typically stored in a matrix of N×N “texels” (sometimes also referred to as “texture elements” or “texture pixels”). Thus, in the same manner that images are represented by an array of pixels textures are represented by arrays of texels. When performing texture mapping, logic within a graphics processing unit (GPU) maps the texels to appropriate pixels in the output image.
Texture compression techniques are implemented to reduce the amount of memory consumed by texture data. Current texture compression methods do not treat the texture image as a function of its coordinates that can be numerically approximated. Instead, these techniques use algorithmic methods to identify dominant colors and code color gradients between block texels. Compression is usually algorithmically intensive and is applied out of band and/or off-line. Decompression uses multiple steps and often involves temporal and/or spatial dependencies between neighboring texels. These factors drive increased memory/cache size and bandwidth requirements and limited suitability for massively parallel implementations.
Texture filtering (sometimes referred to as texture smoothing) is the technique for determining the color for a texture-mapped pixel using colors of nearby texels. Texture filtering filters out high frequencies from the texture fill and allows a texture to be applied at many different shapes, sizes and angles while minimizing undesirable artifacts such as blurriness, shimmering and blocking. “Mipmapping” is a form of texture filtering in which pre-calculated, optimized groups of images (mipmaps) are created to accompany a primary texture. Each bitmap image of the mipmap set is the primary texture down-sampled to a certain reduced level of detail.
One problem which exists is that current texture filtering methods are compute intensive and memory bandwidth intensive and require the texture to be decompressed before the filter is applied. Techniques like mipmap filtering, for example, have significant memory and compute requirements.